package com.sky.chapter3.unsafe;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author : wushikai
 * <p>
 * date : 2022-07-06
 */
public class DateUtils2 {

    /**
     * 使用 threadLocal 解决并发问题
     * */
    private static final ThreadLocal<SimpleDateFormat> sdf_threadLocal =
            ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));

    /**
     * ThreadLocal可以确保每个线程都可以得到各自单独的一个SimpleDateFormat的对象，那么自然也就不存在竞争问题了。
     *
     */
    private static Date parseDateTL(String stringDate) throws Exception {
        return sdf_threadLocal.get().parse(stringDate);
    }

    public static void main(String[] args) throws Exception {
        for (int i = 1; i <= 30; i++) {
            new Thread(() -> {
                try {
                    System.out.println(DateUtils2.parseDateTL("2020-11-11 11:11:11"));
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }, String.valueOf(i)).start();
        }
    }
}
